for (let i = 0; i <= 5; i++) {
    (function () {
        let j = i//相当于定义了5个j，阻断了j的共享
        setTimeout(function timer() {
            console.log(i);
        }, j * 1000)
    })()
}//有序的输出012345

//每次循环都要有一个新的闭包作用域 立即执行函数立即完成
for (let i = 0; i <= 5; i++) {
    (function (j) {
        setTimeout(function timer() {
            console.log(i);
        }, j * 1000)
    })(i)//每次都会生成一个新的作用域
}

for (let i = 0; i <= 5; i++) {
    function a(i) {
        setTimeout(function timer() {
            console.log(i);
        }, i * 1000)
    }//每次都会生成一个新的作用域
    a(i)
}
